package org.aplombh.java.leetcode.all;

public class _8字符串转换整数_atoi {
    public static void main(String[] args) {
        System.out.println(new Solution8_1().myAtoi("   -42"));
    }
}

class Solution8_1 {
    public int myAtoi(String s) {
        int i, sum = 0, flag = 1;
        // 去除前导空格
        for (i = 0; i < s.length() && s.charAt(i) == ' '; i++) ;

        // 判断是否为空
        if (i == s.length())
            return 0;

        int i1 = i;
        // 判断符号
        for (; i < s.length() && (s.charAt(i) == '-' || s.charAt(i) == '+'); i++) {
            if (s.charAt(i) == '-')
                flag *= -1;
        }

        if (i - i1 > 1)
            return 0;

        for (; i < s.length() && (('0' <= s.charAt(i) && s.charAt(i) <= '9') || ' ' == s.charAt(i)); i++) {
            if (s.charAt(i) != ' ') {
                if (sum > Integer.MAX_VALUE / 10 || (sum == Integer.MAX_VALUE / 10 && ((flag == 1 && s.charAt(i) - '0' > 7) || (flag == -1 && s.charAt(i) - '0' > 8))))
                    return flag == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;

                sum = sum * 10 + s.charAt(i) - '0';
            }else
                break;

        }

        return sum * flag;
    }
}